{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "83309a50-707c-4cec-ba5a-095333293b07",
   "metadata": {},
   "source": [
    "# MathQA Error Analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "fac679ab-d5eb-40d8-806e-d72f9ab9d57d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import re\n",
    "import spacy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "95c273c8-4fb5-46aa-9fdd-59253de7f5f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import matplotlib \n",
    "\n",
    "matplotlib.rcParams['figure.dpi'] = 200\n",
    "matplotlib.rcParams['figure.figsize'] = (4.5, 2.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "997c3df8-be6b-4479-9702-8b328ee0e8b0",
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "bf4313ec-0417-406f-a97c-eee511700fde",
   "metadata": {},
   "outputs": [],
   "source": [
    "nlp = spacy.load(\"en_core_web_sm\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "35670ad3-7a9d-400f-b6d8-8e651bea46bf",
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_step(sent):\n",
    "    doc = nlp(sent)\n",
    "    n_step = len(list(s for s in doc.sents))\n",
    "    return n_step\n",
    "\n",
    "def test_answer(pred_str, ans_str):\n",
    "    \"\"\"Find the last number as the predicted answer\"\"\"\n",
    "    pattern = '\\d*\\.?\\d+'\n",
    "    pred = re.findall(pattern, pred_str)\n",
    "    if(len(pred) >= 1):\n",
    "        # print(pred_str)\n",
    "        pred = pred[-1]\n",
    "        gold = re.findall(pattern, ans_str)\n",
    "        # print(ans_str)\n",
    "        gold = gold[-1]\n",
    "        return pred == gold\n",
    "    else: return False\n",
    "\n",
    "def parse_pred_ans(filename):\n",
    "    with open(filename) as fd: lines = fd.readlines()\n",
    "    am, a = None, None\n",
    "    num_q, acc = 0, 0\n",
    "    current_mode = 'none'\n",
    "    questions = []\n",
    "    ans_pred = []\n",
    "    ans_gold = []\n",
    "    labels = []\n",
    "    for l in lines:\n",
    "        if(l.startswith('Question: ')):\n",
    "            if(am is not None and a is not None):\n",
    "                questions.append(q)\n",
    "                ans_pred.append(am)\n",
    "                ans_gold.append(a)\n",
    "                if(test_answer(am, a)):\n",
    "                    acc += 1\n",
    "                    labels.append(1)\n",
    "                else: labels.append(0)\n",
    "            current_mode = 'q'\n",
    "            q = l\n",
    "            num_q += 1\n",
    "        elif(l.startswith('Options: ')): pass\n",
    "        elif(l.startswith('A_model:')):\n",
    "            current_mode = 'am'\n",
    "            am = l\n",
    "        elif(l.startswith('A:')):\n",
    "            current_mode = 'a'\n",
    "            a = l\n",
    "        else:\n",
    "            if(current_mode == 'q'): q += l\n",
    "            elif(current_mode == 'am'): am += l\n",
    "            elif(current_mode == 'a'): a += l\n",
    "            else:\n",
    "                raise ValueError(current_mode)\n",
    "                \n",
    "    questions.append(q)\n",
    "    ans_pred.append(am)\n",
    "    ans_gold.append(a)\n",
    "    if(test_answer(am, a)):\n",
    "        acc += 1\n",
    "        labels.append(1)\n",
    "    else: labels.append(0)\n",
    "    print('num_q %d correct %d ratio %.4f' % (num_q, acc, float(acc / num_q)))\n",
    "    return questions, ans_pred, ans_gold, labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "c3dc4267-7a52-46a1-82ba-5d3473fdebca",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "num_q 200 correct 68 ratio 0.3400\n"
     ]
    }
   ],
   "source": [
    "questions, ans_easy_pred, ans_easy_gold, easy_label = parse_pred_ans('outputs/dev_outputs_coht_easier_1_lb.txt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a1097a39-fbe1-4b79-9d51-6f89ee3be636",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['A:',\n",
       " '\"distance from a and b be \\' d \\' average speed = total distance / total time average speed = ( 2 d ) / [ ( d / 20 ) + ( d / 30 ) ] = ( 2 d ) / [ 5 d / 60 ) = > 24 kmph . answer : b\" 24 ',\n",
       " '',\n",
       " '']"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ans_easy_gold[0].split('\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "8cd65159-23d9-4155-a194-852478d7d80b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_step(ans_easy_gold[0].split('\\n')[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "fddeb709-fb86-4006-8afc-82ca81d0b42e",
   "metadata": {},
   "outputs": [],
   "source": [
    "easy_acc_dist = {}\n",
    "for a, y in zip(ans_easy_gold, easy_label):\n",
    "    a = a.split('\\n')\n",
    "    a_len = get_step(a[1])\n",
    "    if(a_len in easy_acc_dist):\n",
    "        easy_acc_dist[a_len][0] += y\n",
    "        easy_acc_dist[a_len][1] += 1\n",
    "    else: \n",
    "        easy_acc_dist[a_len] = [y, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "5a5c7fef-d9ca-42d4-9a79-3536a1caf401",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{4: [8, 20],\n",
       " 5: [6, 20],\n",
       " 3: [14, 37],\n",
       " 2: [11, 37],\n",
       " 7: [5, 9],\n",
       " 1: [18, 46],\n",
       " 6: [3, 11],\n",
       " 16: [0, 1],\n",
       " 11: [1, 2],\n",
       " 9: [0, 3],\n",
       " 10: [0, 2],\n",
       " 8: [1, 6],\n",
       " 12: [0, 3],\n",
       " 18: [0, 1],\n",
       " 21: [1, 2]}"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "easy_acc_dist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "a06df496-63b7-48d9-b4a8-84dff4dc8eae",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "num_q 200 correct 85 ratio 0.4250\n"
     ]
    }
   ],
   "source": [
    "questions, ans_hard_pred, ans_hard_gold, hard_label = parse_pred_ans('outputs/dev_outputs_coht_mid_1_lb.txt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "6d76df28-5257-467c-a7ec-03f14f904e9f",
   "metadata": {},
   "outputs": [],
   "source": [
    "hard_acc_dist = {}\n",
    "for a, y in zip(ans_hard_gold, hard_label):\n",
    "    a = a.split('\\n')\n",
    "    a_len = get_step(a[1])\n",
    "    if(a_len in hard_acc_dist):\n",
    "        hard_acc_dist[a_len][0] += y\n",
    "        hard_acc_dist[a_len][1] += 1\n",
    "    else: \n",
    "        hard_acc_dist[a_len] = [y, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "30966f88-08bb-4fc7-b76e-e84ee92c62e7",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{4: [10, 20],\n",
       " 5: [6, 20],\n",
       " 3: [14, 37],\n",
       " 2: [15, 37],\n",
       " 7: [6, 9],\n",
       " 1: [23, 46],\n",
       " 6: [5, 11],\n",
       " 16: [0, 1],\n",
       " 11: [2, 2],\n",
       " 9: [1, 3],\n",
       " 10: [0, 2],\n",
       " 8: [2, 6],\n",
       " 12: [0, 3],\n",
       " 18: [0, 1],\n",
       " 21: [1, 2]}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hard_acc_dist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "f445fd42-729a-4d60-8bda-e720e488da24",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n",
    "easy_correct = [easy_acc_dist[xi][0] for xi in x]\n",
    "hard_correct = [hard_acc_dist[xi][0] for xi in x]\n",
    "total = [hard_acc_dist[xi][1] for xi in x]\n",
    "for xi in x:\n",
    "    if(xi > 10):\n",
    "        easy_correct[-1] += easy_acc_dist[xi][0]\n",
    "        hard_correct[-1] += hard_acc_dist[xi][0]\n",
    "        total[-1] += hard_acc_dist[xi][1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "075084ff-a701-475d-a053-f3586115c3ad",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f9699fc2130>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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++CDDwY834EDB3Ts2LGA5/OMPLV161atWLEiy/4TJ06ob9+++f7W/PHHH1dERISstbr99tu1Z0/geaYy7/N8hmXLlmnbtm1Z0h88eFB33XVX0PN//PHH3kDFn3nz5nmXfWddj4iI0PDhwyVJO3bsUL9+/YIGdUePHs0yb8nSpUv9ltsjNTVVixcvliSVLVs2aC0NAHjQBwMAirmmTZuqdOnSOnXqlJ577jlFRUWpTp06iohwvWOqWbOmzjvvPEnSW2+9pYULF+rIkSMaNGiQli1bpttuu03nn3++Nm3apNdff13r16+XJN16661ZZvGWXBPGSa5hZe+77z499NBDGfo6eDoR33XXXXr33XeVnp6url276oknnlC7du1UunRprVmzRm+99Za2bt2qtm3bOt4EyNdVV12lF154Qc8995y2bNmiJk2a6IEHHlCnTp1UuXJl/fHHH1q/fr2++OILlShRwjuLuST169dPcXFxOn78uDp06KCnnnpKzZs3lyStWLFCb775pvbv3682bdpkmH/C11133aXHH39cvXr10tVXX62LLrpIpUuX1m+//ab58+dr7NixklwP+HfeeWeGY++77z7Nnz9fM2fO1Oeff661a9fq3nvvVcuWLVWhQgUdPXpUmzZtUkJCgr766iuVLl06Q1C4cOFCjRw5Uu3bt1fXrl11xRVXqGrVqjp58qS2bNmi999/X2vXrpXkmhsl2ESAAOBhCtuIHIWRMaaWpN2StHv37qDjkucn3zHqC5u8dC7EuWfr1q1KS0tTZGRktuZPKMz3vhMK4vfnySef1Kuvvup336JFi9SxY0fv+rp16xQbG6vk5OSA+fXq1UtTp07N0PzKIz09XW3bttXKlSv9Huv7f+ff//63nn/++YDneeyxx9S4cWMNHDhQkmveirp162ZI07FjRy1evFgdOnRQQkJCwLxCeemll/T8888HrU3wd45BgwYFnKSuRIkSeuONN3TkyBHvaFOZ/+9mp89KhQoVNH36dL+zdf/111/6xz/+offffz/kKFv16tXLMOTtiBEjvOUKpnv37po2bZo3EAVQOOX0/+uePXt8B/Soba0NXIWbA7yKAFDoEcDm3ahRo9SgQQNNmTJFP/74o/7888+Acxs0bdpUmzdv1ujRo/Xll19q8+bNOnHihKpUqaLWrVtrwIAB6tatW8BzRUREaN68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qJYtW+qRRx5RgwYNdODAAU2aNEmfffaZ9+ealJSkcuXK5ehz/P7772rXrp12796tUqVK6e6771aHDh1Ut25dpaSkaN68eXrnnXe0bds2denSRWvXrlWFChVyfd3Wr1+vTz75RNWqVdPTTz+tli1b6tSpU5o9e7befvttnT59Wnfeeafq1auX5d739eSTT2rDhg265ZZbNGDAANWpU0e//fabN6g8c+aMYmNj9d1330lyBcQPPvig6tWrp+TkZE2YMEFffvmlfv75Z1133XVav3590Af2Pn36aM+ePXr66ad10003KTo6WsuWLdPzzz+vo0ePavDgwYqJiVFsbKxOnjypF198UR06dFBUVJS++eYbvfjiizp9+rQGDBigrVu3qmTJwHMx33vvvVqzZo1uu+029e/fX9WqVdOWLVv01ltvKTExUUuWLNFdd92V4R6+//771bt3bz377LOaNWuWatSooblz5+b0x3NOC2uAYa0dIWlEDtLPljQ7v8oDAMXR6NGjvQ/QPXv21LRp07I80Hft2lUjR47Uvn37MmyPj4/3Plxfd911mj17doZ/5p07d1abNm10zz336PDhw3r00Uf16aefBizLhg0bNH78eA0ePNi7rVmzZrlKO378eMXHxysqKkpfffVVlofy1q1b66677lL79u31448/atiwYVq2bJkj16Zx48YZHqBq1qypxo0bK7eaNWumcuXK6dixY0pISMjwWU6fPq2VK1dKcgVRcXFxSkhI0LBhwzLk4anB6NAh1KCL2bd8+XJvE7NPPvkkSw1F69atdccdd+itt97SiRMncn2e77//Xm+//bb+8Y9/eLc1a9ZMHTt2VMOGDXXs2DH17dtXhw4d0hdffKEePXpkSBcTE6OmTZvqzJkzGjdunN55552A50pMTNTNN9+sWbNmKTLy7GNQly5d1LhxY/3rX//Srl27NHLkSL366qs5+hwPP/ywdu/erTp16mjRokUZmtFJrkCyT58+at++vXbs2KFXX31VL774Yo7O4euHH35QnTp1tHLlSlWvXt27/ZprrtGNN96ozp0766+//tL999+vVatWBcxnw4YNevbZZzVy5Ei/+99//31vcNGvXz9vEyRJat68ubp166ZnnnlGL730krZv366RI0fqlVdeCXi+9evXa/HixWrVqpV3W0xMjBo0aKDY2FgdO3ZMrVq1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8ccfBXr+3Jg3b17AoZTT09M1efJkSa5+CYHmaPGnW7du3uv/9ttv57mc2XH48OEss5/78p2t3DOUdE7VqFHD2wfns88+C/h7cubMGe+wuzm9dvnpo48+8tbwZbZ3717NmzdPkut3KnOtk+d33Knf73MJAQYAFGMRERF64oknJEl79uxRv379Ao7+k56e7p1UzcMzXn9qaqoGDx6sv/76K8txEyZM8P6T7tWrV4F0mI6IiNDw4cMluUa76tevX9CHgKNHj2r06NFZ8sjLtalcubJ3hB7PkLl5FRUVpauvvlqSax6G48ePZ+h/4eF5qP/222+9o/X463/RsWNH78hFO3fuzHF5li5dqm3btgXcn5qa6q1BKVu2rKpWrZrjcxS006dP69577/XbOXjUqFHe0ZYGDRoUcF4Ufy655BL16dNHkjR9+nS9+eabQdP/8ssvmjZtWg5K7t+jjz7qt+nS4sWLNW7cOEmuAQRCjaYUjOfvwMGDB/Xwww/7TfPCCy94+wLdfffdObp2+Wn9+vXe+W58paWl6e677/b+zg8dOjRLGs/fsgMHDoQcrQoZ0QcDAIq5Bx54QHFxcZo/f75mzpypJk2a6P7771dMTIyio6O1f/9+rVy5UtOmTVPfvn0zTLjVtWtX9enTR59//rnmzZun1q1b69FHH1WjRo105MgRTZ8+3fuWtFKlSiEfqpx03333eT/T559/rrVr1+ree+9Vy5YtVaFCBR09elSbNm1SQkKCvvrqK5UuXVoPPvigY9cmMjJSLVq00PLlyzVhwgQ1bdpUV111lXfirkqVKuWqTXeHDh00f/58/fnnn5Iy9r/waN26tUqVKpXhoSc/ao4WLlyokSNHqn379uratauuuOIKVa1aVSdPntSWLVv0/vvve+c7GDx4cNAhUwuLmJgYxcXFqW3btnrkkUfUoEEDHThwQJMnT9b06dMlueZHeO6553Kc99ixY7V69Wrt2LFDjz32mGbNmqV+/frp8ssvV6lSpfT777/rhx9+0DfffKNvv/1WPXv21B133JHrz3LllVfqp59+UvPmzfX000+rZcuWOn36tGbPnq233npLaWlpioyM9E6Ul1v33Xefpk6dqu+++04TJ07Ur7/+qvvvv1/16tXTvn37NGHCBH3xxReSpIsuuihX1y6/xMTE6Mknn9T69evVr18/VatWTVu3btWb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wYM1bdq0LPv27t2rvXv3Kj4+XgcPHszyYHzq1Cn17dtXM2fOzLD98OHDWrlypVauXKl3331X8fHxuuqqq4KW49ChQ+rZs6fWr18fsszZSXvq1CkNHDhQ06dPz7IvKSlJSUlJGjt2rKZNm6Zu3br5zSMv18YpHTp0UHx8vNasWaOUlBSVLVs2w/7Fixd7l48cOaINGzZkuda+aZx+KCks98/Ro0d1++236/vvv8+wffHixVq8eLHefPNNPfLII9q1a5duvvlm/fjjjxnSLViwQAsXLtRHH32kO++8M+i5UlNT/T4cbtiwQRs2bNDHH3+shQsXqnr16kHzCeSHH35Q9+7dszzoHjx4UAsXLtTChQv13//+V3Fxcbrgggu8+9u1a6ennnpKL730kmbPnq0xY8bo/vvvz5L/Aw88oJ07d0qSPvzwwwx55MbgwYM1YcKEDNs2b96sUaNGacqUKVq4cKEaNWoUNI+tW7eqc+fO3nL5s27dOsXGxmZ5MbB3717NmDFDM2bMUK9evTR16lSVLl066PkWLFigXr166dixY95tv/76qyZMmKCvv/5aixcvVqNGjTRt2jQNGDBAqamp3nR79uzR+++/rzlz5mjFihWqUaNG0HOtXr1aXbt2zRCQnDx5UrNnz9bs2bP16KOP6o033giaR3FCDQYAFHPp6enq3r279+GwQYMGeuutt7R06VKtWbNGX3/9tYYPH66LL77Y7/H9+/f3PhxeeeWVmjJlihITEzV37lzvm/vk5GRdd9112rt3b9CyDB48WD/88IP69evnfaCeOXOmWrVqleO01lr17t3bG1x069ZNH330kZYvX67vvvtO77zzjv72t7/p+PHj6t27t1avXu3Ytdm4caPmzp3rXf+///s/bdy4McOXv4e+QDwBQVpampYtW5Zlf0JCQtB1320XXHBByAe9nChM988999yjNWvW6P7779f8+fO1evVqjR8/3vvw9/jjjyspKUm9evXSjh079NRTTykhIUGJiYl6++23VaFCBVlrQ76ZlqRnn31W33zzjTp37qyZM2dq9erVmjlzpm644QZJ0k8//aRu3brpzJkzObqekuuteocOHfTrr7+qfPnyevrpp73nmDt3rh544AFFRkYqMTFR3bt3119//ZXh+BEjRigmJsb7mTdt2pRh//Tp0/Xxxx9Lku69996AwXV2jRkzRhMmTFDLli01bdo0rV69WrNnz9att94qSUpOTtaNN96Y4UHen969e2vv3r166KGHvD+/adOm6ZJLLpHkCiKuu+46JScnyxijgQMHau7cuVq9erWmTJmiK6+8UpL0xRdfhBxxKTk5WbfeeqsqVqyod999V99//72WLl2qYcOGyRijAwcOaMiQIUpMTFS/fv100UUXafz48Vq1apUWLVqku+66S5IrIHn00UeDnuvEiRPq06eP/vzzTz311FNasmSJvv/+e/3nP//RhRdeKEl688039c4772Q4buLEidq4caP3/u3evXuWvyMTJ04Meu7CihoMACjmRo8erfnz50uSevbsqWnTpqlUqVIZ0nTt2lUjR47Uvn37MmyPj4/XZ599Jkm67rrrNHv2bJUsWdK7v3PnzmrTpo3uueceHT58WI8++qg+/fTTgGXZsGGDxo8fr8GDB3u3NWvWLFdpx48fr/j4eEVFRemrr77STTfdlOH41q1b66677lL79u31448/atiwYVke3nN7bRo3bpyhlqFmzZpq3LhxwM8dSrNmzVSuXDkdO3ZMCQkJGT7L6dOntXLlSkmuICouLk4JCQkaNmxYhjw8NRgdOnTIdTn8KUz3z6pVq/TFF1+oR48e3m3NmzdXixYt1LRpU6Wnp+vaa6/V0aNHtXjx4gyBa0xMjBo0aKCuXbvq2LFjmjp1qh555JGA50pMTNQ999yj//73vxnO1aNHDw0ZMkQffvihVq9erf/+9785CiYlV9D1559/qmnTppo3b56qVKmSYX/nzp0VGxurrl276vvvv9ekSZN09913e/dHRUVp6tSpatq0qU6cOKG+fftq5cqVKlmypHbv3q2hQ4dKkho2bKg333wzR2XzJzExUTfffLNmzZqlyMizj45dunRR48aN9a9//Uu7du3SyJEj9eqrrwbMJykpSXPmzFHnzp2925o3b+5dHjZsmI4cOSJJ+uCDDzL87jdv3ly33nqrunTpokWLFunTTz9V//791aVLF7/n2rp1qxo0aKDly5eratWq3u3t2rVTZGSkXn/9dS1fvlxdu3ZVy5YtNX/+fEVHR3vTdezYUadOndLnn3+uGTNm6ODBgxny8XXw4EH98ccfWrBgga655hrv9pYtW+r//b//p1atWmnPnj165pln1LdvX28+nmaWUVFRkqSKFSvm6e9IYUINBgAU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vyVO/R0pDAgwAKAYi4iI0BNPPCFJ2rNnj/r16xdwnPr09HQlJydn2PbAAw9Icr2hGzx4cJYZhSXXw8C8efMkSb169SqQDtMREREaPny4JNeb4H79+gX953z06NEsY+bn9dpUrlzZO6+DZ8jcvIqKitLVV18tyTWnwPHjxzP0v/DwPLh/++233tF3/PW/6Nixo3dEop07d+a4PMX1/smO/fv367HHHvO779FHH/V21vbMlZBdnTt39o669Nprr3kDlUA2btyouLi4LNsffvhh7whK48aN8w4j+8QTT3jvhRdeeEFr1qzJUfn8OX36tO69916/NSKjRo3yjow0aNCggPOkhFKjRg317NlTkjRnzhy/D+ypqakaNGiQ9z7yjLJVGIwdOzbLRJ6S6z56/PHHJblqXDxD+vry3PNO/R0pDAgwAKCYe+CBB7zjxs+cOVNNmjTRO++8o+XLl2vdunWaM2eOnn/+eTVq1Ejjxo3LcGzXrl3Vp08fSa63mK1bt9bUqVO1Zs0aLViwQEOGDNGQIUMkudoWOzFrcHbdd9993geSzz//XJdffrlee+01LV68WOvXr9eSJUs0btw49e3bVzVq1NCIESOy5JGXaxMZGekdvnPChAmaNm2afv75Z23btk3btm3L9WgxnofDP//8U1LG/hcerVu3VqlSpXTs2LF863/hUVzvn1BiYmI0duxYdenSRbNmzdLatWs1a9Ys3XTTTd7P2bRpU9133305zvuTTz5RpUqVdObMGd1222265ZZbNHXqVK1atUpr1qzRnDlz9NJLL6lNmza64oorMsxzIrl+DhMnTpTkmn+hV69e3n0RERGaMmWKKlSooL/++kt33nlnwJqY7IqJiVFcXJzatm2rTz/9VGvXrtU333yjO+64Q88884wk10SMzz33XJ7O89Zbb3lHmho0aJDuvvtuLViwQGvWrNHUqVPVqlUrLVy4UJK8s3oXBlWrVlWNGjV0ww03aPjw4Vq2bJkSExP13nvvqXnz5tq1a5ckaeTIkX4HmvC8VEhMTNSoUaP0ww8/eP+O7N27t0A/i1Po5A0AxVxERIS+/PJL9e/fX//73/+0ZcsWDRs2LNvHT5kyRWlpaZo5c6bWrl2rv//971nS1KhRQ/Hx8fk623Vmxhh9+umn+sc//qH3339f27dv1z//+c+A6f39Y8/rtXn66afVrVs3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\n",
      "text/plain": [
       "<Figure size 900x500 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(np.array(x), total, width=0.6, color='lightgrey', label='total cases')\n",
    "plt.bar(np.array(x)-0.15, easy_correct, width=0.3, color='lightcoral', label='correct w. simple prompt')\n",
    "plt.bar(np.array(x)+0.15, hard_correct, width=0.3, color='steelblue', label='correct w. complex prompt')\n",
    "plt.legend()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
